package com.cn.wanxi.util;

import com.alibaba.fastjson.JSONObject;
import com.cn.wanxi.model.CompanyModel;

public class Test {
    private static final String NAME = "aaa";

//    public Test() {
//    }

    //    public static void main(String[] args) {
//        CompanyModel companyModel = new CompanyModel();
//        companyModel.setLogo("afdsa");
//        companyModel.setPhone("139988888");
//        companyModel.setNet("www.baidu.com");
////        需要将对象转换为json字符串
//        System.out.println(JSONObject.toJSON(companyModel));
//    }
//    public static void main(String[] args) throws Exception {
//        Person person = new Person();
//        person.
//private只能在同一个类方法
//        protected  受保护的  不能包不能访问
//        默认不写  不同包不能访问
//        public  所有的类都可以访问

//    }

    /**
     * 1.创建了包   文件夹 为了区分  装东西  分类
     * 2.创建了类  抽象出对象
     * 3.认识对象？
     * --------------------------
     * 规范：  package包名的规范：  com   国际  cn   中国  wanxi  代表公司 其他包 就是模块
     * 全小写  每一个.号之间 必须为一个单词
     * class类名规范？  大驼峰   CompanyModel  所有单词的首字母大写
     * 命名的时候每一个对象必须跟包名 对象+包名
     * 对象 或者类的组成部分？
     * 我们可以通过这个类得到什么？（反射）
     * 1.包
     * 2.类
     * 3.属性
     * 4.方法
     * 5.构造方法
     * ------------------------------------
     * 属性---怎么定义属性？
     * private static final String NAME = "aaa";
     * private 权限修饰符
     * static 特征修饰符
     * final 特征修饰符
     * String  数据类型
     * NAME  变量名 标识符
     * =  运算符
     * "aaa"  变量值
     * ------------------------
     * 权限修饰符   需要得到访问的权限
     * 4种权限  又叫访问修饰符 private protected  public  默认不写
     * 特征修饰符  又叫非访问修饰符
     * static 修饰符，用来修饰类方法和类变量。
     * <p>
     * final 修饰符，用来修饰类、方法和变量，
     * final 修饰的类不能够被继承，
     * 修饰的方法不能被继承类重新定义，
     * 修饰的变量为常量，是不可修改的。
     * 一般情况下和staic一起修饰遍历 表示常量
     * abstract 修饰符，用来创建抽象类和抽象方法。
     * <p>
     * synchronized 和 volatile 修饰符，主要用于线程的编程。
     * -------------------------------------------------
     * Java数据类型：
     * 两种：
     * 基本数据类型  四种  整型 （4种） 浮点型（2种） 布尔型  字符型
     * 整型：     byte  Byte 字节    short  Short 短整型   int  Integer 整型 long  Long长整型
     * 字节数：     1               2               4       8
     * 0 101 0001  是有符号还是无符号？
     * 0 111 1111   1111 1111
     * 有符号   第一个代表符号位  剩余的代表值 代表有负数
     * 取值范围：    -2^7 ---2^7-1
     * 每个字节  又分为 8个bit位  每个bit位可以是 0和1
     * 面试：2进制和10进制相互转换？
     * 基本数据类型的取值范围？
     * 基本数据默认值？
     * ---------------------------------
     * 浮点型：
     * float   Float 4
     * double  Double  8
     * --------------------------
     * 布尔型  true  false  Boolean 占多少字节？ 1个bit位
     * ------------------------------------------
     * 字符型  char  Character  2个字节
     * ------------------------------------------
     * java 对每个基本类型 都封装了一个包装类
     * 拆箱 Character -->char
     * 和
     * 装箱？ char-->Character
     * 引用数据类型
     * 类   注解  枚举  接口  抽象类 异常类
     * 熟悉常用类：String   Number   Date   Math
     * ------------------------------------
     * 下一节课的：抽象类  ，接口  数组
     * 包 类名  属性  方法  构造方法
     * 关键字 全部小写
     * -------------------------------------
     * 命名规则：全英文
     * 不要出现特殊字符  汉字   拼音   英文+拼音
     * 方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 小驼峰风格。userName
     * 类名：大驼峰   UserName
     * 常量：全大写 每个单词之间用下划线 USER_NAME
     * 变量：
     * 全局变量
     * 局部变量
     * 静态变量  static String name;
     * 类变量
     */
    String _aa = "a";

    //    构造方法：方法名和类名一致
//    构造方法是否有返回值？拿到构造方法的目的？
//    代码块  静态代码块


    Test() {
        System.out.println("test");
    }

    {
        System.out.println("{}");
    }

    private static Child child = new Child();

    static {
        System.out.println("static{}");
    }


//  类的执行顺序:static 先执行  {} 构造方法
//    静态代码 安装顺序执行  构造方法执行到最后
//    类的执行顺序？

    public static void main(String[] args) {
        Test test = new Test();
    }
}
